#include <iostream>
#include <queue>
using namespace std;

/*
std::queue 类模板是一种容器适配器，它提供队列的功能——尤其是 FIFO（先进先出）数据结构。 
*/

// 向队列中添加元素
void enqueueElements(queue<double>& q) {
    q.push(10.5);
    q.push(20.5);
    q.push(30.5);
    cout << "元素已加入队列: 10.5, 20.5, 30.5" << endl;
}

// 移除队列的前端元素
void dequeueElement(queue<double>& q) {
    if (!q.empty()) {
        cout << "移除队列前端元素: " << q.front() << endl;
        q.pop();
    } else {
        cout << "队列为空，无法移除元素。" << endl;
    }
}

// 访问队列的前端元素
void accessFront(const queue<double>& q) {
    if (!q.empty()) {
        cout << "队列前端元素: " << q.front() << endl;
    } else {
        cout << "队列为空，无法访问前端元素。" << endl;
    }
}

// 检查队列是否为空
void checkEmpty(const queue<double>& q) {
    if (q.empty()) {
        cout << "队列为空。" << endl;
    } else {
        cout << "队列不为空。" << endl;
    }
}

// 获取队列的大小
void checkSize(const queue<double>& q) {
    cout << "队列的大小: " << q.size() << endl;
}

int main() {
    queue<double> q;

    // 调用函数向队列中添加元素
    enqueueElements(q);

    // 调用函数访问队列的前端元素
    accessFront(q);

    // 调用函数检查队列是否为空
    checkEmpty(q);

    // 调用函数获取队列的大小
    checkSize(q);

    // 调用函数移除队列的前端元素
    dequeueElement(q);

    // 再次检查队列的状态
    accessFront(q);
    checkSize(q);
    checkEmpty(q);

    return 0; // 程序结束
}